home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / mach-o / dyld.h < prev    next >
Text File  |  1994-10-05  |  6KB  |  187 lines

  1. #import "mach-o/loader.h"
  2. #import <streams/streams.h>
  3.  
  4. #ifndef ENUM_BOOL
  5. #define ENUM_BOOL
  6. #undef FALSE
  7. #undef TRUE
  8. enum bool {
  9.     FALSE,
  10.     TRUE
  11. };
  12. #endif /* ENUM_BOOL */
  13.  
  14. /*
  15.  * The high level NS... API.
  16.  */
  17.  
  18. /* Object file image api */
  19. typedef enum {
  20.     NSObjectFileImageFailure, /* for this a message is printed on stderr */
  21.     NSObjectFileImageSuccess,
  22.     NSObjectFileImageInappropriateFile,
  23.     NSObjectFileImageArch,
  24.     NSObjectFileImageFormat, /* for this a message is printed on stderr */
  25.     NSObjectFileImageAccess,
  26. } NSObjectFileImageReturnCode;
  27.  
  28. typedef void * NSObjectFileImage;
  29.  
  30. /* limited implementation, only MH_BUNDLE files can be used */
  31. extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile(
  32.     const char *pathName,
  33.     NSObjectFileImage *objectFileImage);
  34. /* not yet implemented */
  35. extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory(
  36.     void *address,
  37.     unsigned long size, 
  38.     NSObjectFileImage *objectFileImage);
  39. /* not yet implemented */
  40. extern enum bool NSDestroyObjectFileImage(
  41.     NSObjectFileImage objectFileImage);
  42. /*
  43.  * Need api on NSObjectFileImage's for:
  44.  *   "for Each Symbol Definition In Object File Image" (for Dynamic Bundles)
  45.  *   Could have the same thing for references
  46.  */
  47. /* not yet implemented */
  48. extern unsigned long NSSymbolDefinitionCountInObjectFileImage(
  49.     NSObjectFileImage objectFileImage);
  50. /* not yet implemented */
  51. extern const char * NSSymbolDefinitionNameInObjectFileImage(
  52.     NSObjectFileImage objectFileImage,
  53.     unsigned long ordinal);
  54. /* not yet implemented */
  55. extern unsigned long NSSymbolReferenceCountInObjectFileImage(
  56.     NSObjectFileImage objectFileImage);
  57. /* not yet implemented */
  58. extern const char * NSSymbolReferenceNameInObjectFileImage(
  59.     NSObjectFileImage objectFileImage,
  60.     unsigned long ordinal,
  61.     enum bool *tentative_definition); /* can be NULL */
  62. /*
  63.  * Other needed api on NSObjectFileImage:
  64.  *   "does Object File Image define symbol name X" (using sorted symbol table)
  65.  *   a way to get the named objective-C section
  66.  */
  67. /* not yet implemented */
  68. extern enum bool NSIsSymbolDefinedInObjectFileImage(
  69.     NSObjectFileImage objectFileImage,
  70.     const char *symbolName);
  71. /* not yet implemented */
  72. extern void * NSGetSectionDataInObjectFileImage(
  73.     NSObjectFileImage objectFileImage,
  74.     const char *segmentName,
  75.     const char *sectionName);
  76.  
  77. /* module api */
  78. typedef void * NSModule;
  79. /* not yet implemented */
  80. extern const char * NSNameOfModule(
  81.     NSModule m); 
  82. /* not yet implemented */
  83. extern const char * NSLibraryNameForModule(
  84.     NSModule m);
  85.  
  86. /* limited implementation, only MH_BUNDLE files can be linked */
  87. extern NSModule NSLinkModule(
  88.     NSObjectFileImage objectFileImage, 
  89.     const char *moduleName, /* can be NULL */
  90.     enum bool bindNow);
  91. /* not yet implemented */
  92. extern enum bool NSUnLinkModule(
  93.     NSModule module, 
  94.     enum bool keepMemoryMapped); 
  95. /* not yet implemented */
  96. extern NSModule NSReplaceModule(
  97.     NSModule moduleToReplace,
  98.     NSObjectFileImage newObjectFileImage, 
  99.     enum bool keepMemoryMapped,
  100.     enum bool preserveFunctionAddresses); 
  101.  
  102. /* symbol api */
  103. typedef void * NSSymbol;
  104. /* not yet implemented */
  105. extern enum bool NSIsSymbolNameDefined(
  106.     const char *symbolName);
  107. /* not yet implemented */
  108. extern NSSymbol NSLookupAndBindSymbol(
  109.     const char *symbolName);
  110. /* not yet implemented */
  111. extern const char * NSNameOfSymbol(
  112.     NSSymbol symbol);
  113. /* not yet implemented */
  114. extern void * NSAddressOfSymbol(
  115.     NSSymbol symbol);
  116. /* not yet implemented */
  117. extern NSModule NSModuleForSymbol(
  118.     NSSymbol symbol);
  119.  
  120. /* error handling api */
  121. typedef enum {
  122.     NSLinkEditFileAccessError,
  123.     NSLinkEditFileFormatError,
  124.     NSLinkEditMachResourceError,
  125.     NSLinkEditUnixResourceError,
  126.     NSLinkEditOtherError,
  127.     NSLinkEditWarningError
  128. } NSLinkEditErrors;
  129.  
  130. typedef struct {
  131.      void     (*undefined)(const char *symbolName);
  132.      NSModule (*multiple)(NSSymbol s, NSModule old, NSModule new); 
  133.      void     (*linkEdit)(NSLinkEditErrors c, int errorNumber,
  134.                           const char *fileName, const char *errorString);
  135. } NSLinkEditErrorHandlers;
  136.  
  137. extern void NSInstallLinkEditErrorHandlers(
  138.     NSLinkEditErrorHandlers *handlers);
  139.  
  140. /* other api */
  141. /* not yet implemented */
  142. extern enum bool NSAddLibrary(
  143.     const char *pathName);
  144. /* not yet implemented */
  145. extern long NSVersionOfLibrary(
  146.     const char *libName);
  147.  
  148. /*
  149.  * The low level _dyld_... API.
  150.  * (used by the objective-C runtime primarily)
  151.  */
  152. extern unsigned long _dyld_present(
  153.     void);
  154.  
  155. extern unsigned long _dyld_image_count(
  156.     void);
  157. extern struct mach_header * _dyld_get_image_header(
  158.     unsigned long image_index);
  159. extern unsigned long _dyld_get_image_vmaddr_slide(
  160.     unsigned long image_index);
  161.  
  162. extern void _dyld_register_func_for_add_image(
  163.     void (*func)(struct mach_header *mh, unsigned long vmaddr_slide));
  164. extern void _dyld_register_func_for_link_module(
  165.     void (*func)(NSModule module));
  166. /* not yet implemented */
  167. extern void _dyld_register_func_for_unlink_module(
  168.     void (*func)(NSModule module));
  169. /* not yet implemented */
  170. extern void _dyld_register_func_for_replace_module(
  171.     void (*func)(NSModule oldmodule, NSModule newmodule));
  172. extern void _dyld_get_objc_module_sect_for_module(
  173.     NSModule module,
  174.     void **objc_module,
  175.     unsigned long *size);
  176. extern void _dyld_bind_objc_module(
  177.     void *objc_module);
  178.  
  179. extern void _dyld_lookup_and_bind(
  180.     const char *symbol_name,
  181.     unsigned long *address,
  182.     void **module);
  183.  
  184. extern int _dyld_func_lookup(
  185.     const char *dyld_func_name,
  186.     unsigned long *address);
  187.